package cn.qingyun.gis.modules.scenes.entity;

import cn.qingyun.gis.cache.handler.GeometryDeserializor;
import cn.qingyun.gis.cache.handler.GeometrySerializor;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.locationtech.jts.geom.Polygonal;
import org.locationtech.jts.geom.Puntal;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * @Description: 表实体对象
 * @Version: V1.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@TableName(value = "poi_government")
@ApiModel(value = "PoiGovernment对象", description = "PoiGovernment对象")
public class PoiGovernment implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 36位唯一标识
     */
    @ApiModelProperty(value = "36位唯一标识")
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * poi名称
     */
    @ApiModelProperty(value = "poi名称")
    private String name;

    /**
     * 标准地址
     */
    @ApiModelProperty(value = "标准地址")
    private String address;

    /**
     * 默认0高德
     */
    @ApiModelProperty(value = "默认0高德")
    private Integer source;

    /**
     * 类型编码
     */
    @ApiModelProperty(value = "类型编码")
    private String typeCode;

    /**
     * 中心点
     */
    @ApiModelProperty(value = "中心点")
    @NotNull(message = "Poi中心点，不能为空！")
    private Puntal point;

    /**
     * 边界围栏
     */
    @ApiModelProperty(value = "边界围栏")
    private Polygonal wkt;

    /**
     * 高德poi_id
     */
    @ApiModelProperty(value = "高德poi_id")
    private String gdId;

    /**
     * 父节点
     */
    @ApiModelProperty(value = "父节点")
    private String parentId;

    /**
     * 主节点
     */
    @ApiModelProperty(value = "主节点")
    private String majorId;

    /**
     * 默认1
     */
    @ApiModelProperty(value = "默认1")
    private Integer state;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 分词结果
     */
    @ApiModelProperty(value = "分词结果")
    private String tsName;

    /**
     * 0:企业/1:建筑
     */
    @ApiModelProperty(value = "0:企业/1:建筑")
    private Integer isBuild;

    /**
     * 归属建筑id
     */
    @ApiModelProperty(value = "归属建筑id")
    private String belongBuildId;

    /**
     * 场景类型（六大场景）
     */
    @ApiModelProperty(value = "场景类型（六大场景）")
    private String scenesType;

    /**
     * 细分场景类型
     */
    @ApiModelProperty(value = "细分场景类型")
    private String divideType;

    /**
     * 归属资管小区编码
     */
    @ApiModelProperty(value = "归属资管小区编码")
    private String zoneCode;

    /**
     * 关联第七级别地址生成36位id
     */
    @ApiModelProperty(value = "关联第七级别地址生成36位id")
    private String addressId;

    /**
     * 商家电话
     */
    @ApiModelProperty(value = "商家电话")
    private String telephone;

    /**
     * 新增来源（0：摸排、1：建档、2：网格通（写死）、3：CRM）
     */
    @ApiModelProperty(value = "新增来源（0：摸排、1：建档、2：网格通（写死）、3：CRM）")
    private Integer createSource;

    /**
     * 审核状态（0：待审核、1：已审核）
     */
    @ApiModelProperty(value = "审核状态（0：待审核、1：已审核）")
    private Integer reviewState;

    /**
     * 地址描述（位置描述）
     */
    @ApiModelProperty(value = "地址描述（位置描述）")
    private String multiAddrChn;
}
